#include "Date.h"

void TestDate1()
{
	Date d1;
	d1.Print();

	Date d2(2023, 5, 4);
	d2.Print();

	Date d3(2026, 5, 1);
	Date d4(2020, 5, 20);

	cout << (d2 > d3) << endl;
	cout << (d2 == d3) << endl;
	cout << (d2 != d3) << endl;
	cout << (d2 >= d4) << endl;
	cout << (d2 < d4) << endl;
	cout << (d2 <= d4) << endl;
}

void TestDate2()
{
	Date d1(2023, 5, 4);
	Date d2 = d1 + 14;
	d2.Print();//我们还可以这样写：
	(d1 + 40).Print();// 跨月
	(d1 + 400).Print();// 跨年
	(d1 + 4000).Print(); // 跨闰年
	(d1 + 40000).Print();
}

void TestDate3()
{
	Date d1(2023, 5, 4);
	Date d2 = d1 - -4;
	d2.Print();//我们还可以这样写：
	(d1 - -40).Print();// 跨月
	(d1 - -400).Print();// 跨年
	(d1 - -4000).Print(); // 跨闰年
	(d1 - 4000).Print(); // 跨闰年
	(d1 - 40000).Print();
}

void TestDate4()
{
	Date d1(2023, 5, 4);
	Date d2 = ++d1;
	d1.Print();
	d2.Print();

	Date d3(2023, 5, 31);
	Date d4 = d3++;
	d3.Print();
	d4.Print();
}

void TestDate5()
{
	Date d1(2023, 5, 4);
	Date d2 = --d1;
	d1.Print();
	d2.Print();

	Date d3(2023, 5, 1);
	Date d4 = d3--;
	d3.Print();
	d4.Print();
}

void TestDate6()
{
	Date d1(2023, 5, 5);
	Date d2(2023, 6, 7);
	d1.Print();
	d2.Print();
	cout << (d1 - d2) << endl << endl;

	Date d3(2023, 5, 5);
	Date d4(2000, 1, 1);
	d3.Print();
	d4.Print();
	cout << (d3 - d4) << endl << endl;

	Date d5(2100, 1, 1);
	Date d6(2000, 1, 1);
	d5.Print();
	d6.Print();
	cout << (d5 - d6) << endl;
}

void TestDate7()
{
	Date d1(2023, 5, 5);
	Date d2(2023, 6, 7);
	d1.Print();
	d1.PrintWeekDay();
	d2.Print();
	d2.PrintWeekDay();

	Date d3(1900, 1, 7);
	Date d4(2050, 6, 7);
	d3.Print();
	d3.PrintWeekDay();
	d4.Print();
	d4.PrintWeekDay();
}

int main()
{
	//TestDate1();
	//TestDate2();
	//TestDate3();
	//TestDate4();
	//TestDate5();
	//TestDate6();
	TestDate7();

	return 0;
}